package com.cskaoyan.javase.array._6variable.notice;

/**
 * 可变参数语法:
 * [修饰符列表] 返回值类型 方法名 (形式参数列表,数据类型... 变量名){
 *   //方法体
 * }
 * 注意事项:
 *      1.可变参数的语法格式建议采用："数据类型... 变量名"
 *          就可以把"..."看成数组的"[]"
 *
 *      2.可变参数必须写在形参列表的最后面，且一个方法最多只有一个可变参数。
 *      3.可变参数的实质是一个数组，那么带有可变参数的方法，也是可以组成方法重载的。
 *          a.如果已经有明确的,具体个数的方法存在,那么优先匹配它们.(就近原则)
 *          b.如果两个带有可变参数的方法组成了方法重载,那就要小心了
 *              有可能出现两个方法都无法调用的情况出现
 *              所以一般来说,带有可变参数的方法之间尽量不要发生方法重载
 *
 * @since 09:47
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // Ambiguous method call: both 'Demo.test(int...)' and 'Demo.test(int, int...)' match
        // test(1, 2);
    }

    // public static void test(int a, int b) {
    // }

    public static void test(int... p) {
    }

    public static void test(int a, int... p) {
    }
    // 等价于
    // public static void test(int[] p) {}
    // public static void test(int... p,int a) {
    // }
}
